共计 1264 个字符,预计需要花费 4 分钟才能阅读完成。
安装 MongoDB
下载 MongoDB 镜像:docker pull mongo
创建并启动容器:docker run --name=mongo -p 27017:27017 -v D:\MongoDB\data:/data/db
-d mongo
Docker 容器运行结束后,数据会丢失,这对 MongoDB 而言,是不可接受的,所以需要将容器中产生的数据保存到本地对应文件中。- v 参数指定数据持久化路径。
基本操作
// 创建和切换数据库,数据库不存在则创建,否则切换到指定数据库
use test
// 当前数据库
db
// 查看所有数据库(数据库没有数据的不会显示出来)show dbs
插入数据
MongoDB 中没有直接创建表的命令,表名在插入数据时指定。
// 向 user 表插入一条数据
db.user.insert({
"name": "zs",
"age": 18
})
// 查询 user 表中数据
db.user.find()
// 可以使用 pretty 对查询结果进行格式化
db.user.find().pretty()
// 删除集合中所有数据,包括索引,删除速度快
db.user.drop()
// 批量插入数据
db.user.insert([{
"name": "zs",
"age": 18
}, {
"name": "zs2",
"age": 19
}, {
"name": "zs3",
"age": 20,
"hobby": "code"
}])
//
db.user.find({
"age": 20,
"name": "zs3"
}, {"_id": 0})
db.collection.find(query, projection)
- query(可选):该参数指定查询条件,是一个 JSON 对象,key 一般为查询列名,value 为查询匹配值
- projection(可选):如果省略该参数,那么查询时返回文档中所有键值。该参数是一个 JSON 对象,key 为需要显示的列名,value 为 1 显示或 0 不显示
更新数据
db.user.update({"name": "zs4"}, {
$set: {"age": 21}
})
进阶操作
范围操作符
- 等于 :
- 小于 lt,小于等于 lte
- 大于 gt,大于等于 gte
- 不等于 ne
db.user.find({
"age": {$gte: 19}
})
AND 操作符
find() 方法可以传入多个 key,每个 key 以逗号隔开。每个 key 之间是与的逻辑关系,即条件间默认关系就是 AND。
db.user.find({
"age": {$gte: 19},
"name": "zs3"
})
OR 操作符
关键字 $or 表示或逻辑关系。
db.user.find({
$or: [
{
"age": {$lte: 19}
},
{"name": "zs3"}
]
})
AND 操作符和 OR 操作符可以混合使用。
排序
db.user.find().sort({age: - 1})
1 为升序,- 1 为降序。
聚合
db.user.insert({
"name": "zs4",
"age": 18
})
db.user.aggregate([
{
$group:
{
_id: {age: '$age'},
totalCount: {$sum: 1}
}
}
])
正文完